package com.shop.merchant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shop.merchant.po.GoodsBase;
import com.shop.po.dto.GoodsInfo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author banxia
 * @since 2023-02-24
 */
public interface GoodsBaseService extends IService<GoodsBase> {

    /**
     * 更新商品id的库存
     * @param goodsId
     * @param count
     * @return
     */
    public void goodsCountUpdate(Long goodsId,Long count);

    //根据商品ID查询数据库（黑名单），不提供api接口！
    public GoodsInfo getByGoodsIdFromDb(Long id);

    //根据商品ID查询redis，（白名单），提供api接口
    public GoodsInfo getByGoodsIdFromRedis(Long id);

    /**
     * 查询商品，白名单，也可以为商家查询商品特有！
     * @param likeName :商品名称模糊匹配 (require=false)
     * @param minPrice ：最低价格  (require=false)
     * @param maxPrice ：最高价格  (require=false)
     * @param categoryName ：分类名称  (require=false)
     * @param page ：第几页
     * @param size ：每页大小
     * @return
     */
    public List<GoodsInfo> getGoodsList(String likeName, Long minPrice,
                             Long maxPrice, String categoryName,
                             Integer page, Integer size);

    /**
     * 发送商品
     * @param goodsInfo
     */
    public void publishGoods(GoodsInfo goodsInfo);

    /**
     * 上/下架商品
     * @param id
     * @param type: 只能为0或是1,在controller中校验
     */
    public void changGoodsStatus(Long id,Integer type);

    public Integer getTotal(String name,Long categoryId);

    public void deleteGoods(Long id);

    Long UserGetTotal(String likeName, Long minPrice, Long maxPrice, String categoryName);
}
